Hash是由Key、Value所組成的資料,設計者只要根據Key值就可以取得相對應的資料唷!
雖然中文翻譯很奇怪,不過大家都是這麼稱呼的,實務上使用都是講hash。
vegan = Hash.new
vegan = {}
# EX:
vegan = { name: 'Lisa', age:8 }
p vegan -> { :name => "Lisa", :age => 8 }
# 字串寫法
vegan = { 'name' => "Lisa", 'age' => 8 }
# 符號寫法
vegan = { :name => "Lisa", :age => 8 }
但之前的章節說過使用「字串」的效能沒有「符號」好,所以這邊使用「符號」為主。
vegan = { name: 'Lisa', age:8 }
*該選擇哪一個版本的寫法呢?
Ans:事實上使用舊式或新式寫法都可以,文件格式統一即可。
因為hash是key跟value的組合,所以可以單獨使用方法來印出。
p vegan.keys # 印出 [:name, :age]
p vegan.values # 印出 ["Lisa", 8]
印出來的是舊式的寫法,因為本質上是舊式的。
*索引號碼
若是之前學過別的程式語言會不習慣ruby的方式,在ruby要用對的key才能拿到value。
例如想要拿到kk
p vegan["name"] # 別的程式語言,印出 nil
p vegan[:name] # Ruby 印出 "Lisa"
vegan = { name: 'Lisa', age:8 }
vegan[:name] = 'Jon'
p vegan # 印出來 { name:'Jon', age:8}
vegan.each do |element|
p vegan
end
多一個變數的寫法
vegan.each do |key, value|
puts key
puts value
end
更多的使用方法依樣可以參考手冊唷!
Hash 官方手冊
請依官方手冊回答以下題目:
hash_one = { a:37 , b:42 }
hash_two = { a:55 , c:77 }
hash_three = { a:66 , d:89}
1. 請印出以下結果。
a is 37
b is 42
2. 請印出以下結果。
{ a:55, b:42, c:77}
3. 請印出以下結果
{ a:37, b:42, c:77, d:89 }
1. hash.each do { |key, value| puts "#{key} is #{value}" }
2. hash_one.merge!(hash_two)
3. hash_one.merge!(hash_two,hash_three){ |key, v1, v2| v1 }